#pragma once

#include "Type.h"
#include "Type.h"
#include "GenericInfo.h"

#include "PlaceholderType.h"


//type of TVector<T>
class WHENGINE_API CTVectorType: public CType
{
public:
    CTVectorType();

    static CTVectorType* GetStaticType();

    static CString CreateTypeName(const CString& ElementType);
    static STypeID CreateID(const SDecoratedType & ElementType);

protected:
    static CString PlaceholderName;
};


class WHENGINE_API CTVectorGeneralized : public CType
{
public:
    CTVectorGeneralized(const SDecoratedType& InElementType);

    SDecoratedType GetElementType() const;

    uint32_t GetVectorNum(const void* InValue);
    //get item at index
    void* GetVectorItem(const void* InValue,uint32_t Index);
};
